package main

import (
	"chatroom/common/message"
	"chatroom/server/processes"
	"chatroom/server/utils"
	"fmt"
	_ "io"
	"net"
)

//先创建一个 Processor 结构体
type Processor struct {
	Conn net.Conn
}

func (processor *Processor) SeverProcessMes(mes *message.Message) (err error) {

	//看看是否能接收到客户端发送的群发消息
	fmt.Println("mes= ", mes)

	switch mes.Type {
	case message.LoginMesType:
		//处理登录逻辑
		//创建一个 UserProcess 实例
		up := &processes.UserProcess{
			Conn: processor.Conn,
		}
		err = up.ServerProcessLogin(mes)
	case message.RegisterMesType:
		//处理注册逻辑
		up := &processes.UserProcess{
			Conn: processor.Conn,
		}
		err = up.ServerProcessRegister(mes)
	case message.SmsMesType:
		//处理群发消息
		//创建smsProcess 实例，完成转发群消息
		smsProcess := &processes.SmsProcess{}
		smsProcess.SendGroupMes(mes)
	case message.PrivateMesType:
		//处理私发信息
		//创建smsProcess 实例，完成私发消息
		smsProcess := &processes.SmsProcess{}
		smsProcess.SendPrivateMes(mes)

	default:
		fmt.Println("消息类型不存在，无法处理...")
	}
	return
}

func (processor *Processor) process2() (err error) {
	//循环读客户端发送的信息
	for {

		//这里我们将读取数据包直接封装成 readPkg(),返回 Message,Err
		//创建一个 Transfer实例 完成读包任务
		tf := &utils.TransFer{
			Conn: processor.Conn,
		}

		mes, err := tf.ReadPkg()
		if err != nil {
			//fmt.Println("process2 客户端退出，服务端也正常退出...")
			return err
		}

		err = processor.SeverProcessMes(&mes)
		if err != nil {
			return err
		}

		fmt.Println("mes=", mes)

	}
}
